PROGRAM warfare;
GLOBAL
status=-2;
playerup=1;
changeplayers=0;
playing=8;
resetcam=0;
expsize=0;
expthere=0;
changecounter=0;
option=1;
fadedone=0;
deleteboxes=0;
wpnsize=30;
gameover=0;
deaths=0;

setwindstrength=5;
setmoney=10000;
sethealth=100;
smokeon=1;
musicon=1;

bgx=0;
bgy=0;
terx=0;
tery=0;
slope=0;
mountains=5;
done=0;

power=0;
brightness=100;
wind=0;
dispwind=0;
dispangle=0;
arrowx=1024;
arrowy=384;
playerspace=0;
setplayer=1;
messages=24;
setmessage=0;

p1x=0;
p2x=0;
p3x=0;
p4x=0;
p5x=0;
p6x=0;
p7x=0;
p8x=0;
p1life=10000;
p2life=10000;
p3life=10000;
p4life=10000;
p5life=10000;
p6life=10000;
p7life=10000;
p8life=10000;
p1id;
p2id;
p3id;
p4id;
p5id;
p6id;
p7id;
p8id;

sfont;
mfont;
lfont;
hfont;
nfont;

mmsong;

smallexpsound;
medexpsound;
bigexpsound;
firesound;
nukesound;
laughsound;
clicksound;
selsound;
backsound;

idterrain;
moverid;
windid;

msgtext=0;
msgtextthere=0;

STRUCT weapons[7]
guns;
gunm;
gunl;

sshs;
sshm;
sshl;

lshs;
lshm;
lshl;

nuks;
nukm;
nukl;

tnks;
tnkm;
tnkl;

dths;
dthm;
dthl;
END

BEGIN

IF (status==11)
ctype=c_scroll;
END

load_fpg("tanks.fpg");
set_fps(50,5);
set_mode(1024768);

sfont=load_fnt("tsml.fnt");
mfont=load_fnt("tmed.fnt");
lfont=load_fnt("tbig.fnt");
hfont=load_fnt("thealth.fnt");
nfont=load_fnt("tnumber.fnt");

mmsong=load_wav("c:/mydocu~1/01-ter~1.wav",1);

smallexpsound=load_wav("c:/div2/pcm/library/wars/explosio/explosi2.wav",0);
medexpsound=load_wav("c:/div2/pcm/library/wars/explosio/explos02.wav",0);
bigexpsound=load_wav("c:/div2/pcm/library/wars/explosio/explosi8.wav",0);
firesound=load_wav("c:/div2/pcm/library/wars/explosio/explos12.wav",0);
nukesound=load_wav("c:/div2/pcm/library/wars/explosio/explos11.wav",0);
laughsound=load_wav("c:/div2/pcm/library/humans/laugh/risas5.wav",0);
clicksound=load_wav("c:/div2/pcm/library/botons/click/ianclick.wav",0);
selsound=load_wav("c:/div2/pcm/library/botons/botons/boton02.wav",0);
backsound=load_wav("c:/div2/pcm/library/botons/interrup/interr11.wav",0);

sound(mmsong,256,256);

LOOP
FRAME;

IF (status==-2)
put_screen(0,23);
IF (NOT FADING)
fade(0,0,0,3);
END
IF (NOT FADING)
status=-1;
END
END

IF (status==-1)
put_screen(0,24);
IF (NOT FADING AND fadedone==0)
fade(100,100,100,3);
END
IF (NOT FADING)
fadedone=1;
fade(0,0,0,3);
END
IF (NOT FADING)
status=0;
END
END

IF (status==0)
mainmenu();
END

IF (status==2)
credits();
END

IF (status==4)
options();
END

IF (status==6)
playermenu();
END

IF (status==10)
game();
END

END
END





//---------------------------------------------------------------------------------------------------------------------





PROCESS mainmenu();
PRIVATE
selectory=250;

BEGIN
option=1;
status=1;
stop_scroll(0);
terx=0;
done=0;
tery=rand(200,568);      //resets generator
slope=rand(-15,15);
fade_on();

put_screen(0,20);

write(lfont,512,100,4,"Warfare");
write(mfont,512,250,4,"New Game");
write(mfont,512,350,4,"Options");
write(mfont,512,450,4,"Credits");
write(mfont,512,550,4,"Exit");

LOOP
FRAME;

explosion(512+rand(-140,140),selectory+rand(-20,20),rand(15,25),10,0);

IF (key(_down) AND selectory<500)
selectory=selectory+10;
FRAME;
selectory=selectory+10;
sound(clicksound,256,256);
FRAME;
selectory=selectory+10;
FRAME;
selectory=selectory+10;
FRAME;
option=option+1;
selectory=selectory+10;
FRAME;
selectory=selectory+10;
FRAME;
selectory=selectory+10;
FRAME;
selectory=selectory+10;
FRAME;
selectory=selectory+10;
FRAME;
selectory=selectory+10;
END

IF (key(_up) AND selectory>300)
selectory=selectory-10;
FRAME;
selectory=selectory-10;
sound(clicksound,256,256);
FRAME;
selectory=selectory-10;
FRAME;
selectory=selectory-10;
FRAME;
option=option-1;
selectory=selectory-10;
FRAME;
selectory=selectory-10;
FRAME;
selectory=selectory-10;
FRAME;
selectory=selectory-10;
FRAME;
selectory=selectory-10;
FRAME;
selectory=selectory-10;
END

IF (key(_enter) AND NOT FADING AND option==1)
sound(selsound,256,256);
fade_off();
delete_text(all_text);
status=6;
END

IF (key(_enter) AND NOT FADING AND option==2)
sound(selsound,256,256);
fade_off();
delete_text(all_text);
status=4;
END

IF (key(_enter) AND NOT FADING AND option==3)
sound(selsound,256,256);
fade_off();
delete_text(all_text);
status=2;
END

IF (key(_enter) AND NOT FADING AND option==4)
sound(selsound,256,256);
fade_off();
delete_text(all_text);
exit("I'll eat your children!",0);
END

IF (status>1 OR status<0)
BREAK;
END

END
END





//---------------------------------------------------------------------------------------------------------------------





PROCESS credits();
BEGIN
status=3;
fade_on();
graph=27;

write(lfont,512,100,4,"Credits");

write(nfont,500,280,5,"Created by");
write(nfont,524,280,3,"Ian Nicholas");

write(nfont,500,300,5,"Using");
write(nfont,524,300,3,"Div Games Studio 2");
write(nfont,524,320,3,"www.div-arena.com");

write(nfont,500,340,5,"Code and Grapics by");
write(nfont,524,340,3,"Ian Nicholas");

write(nfont,500,360,5,"Music");
write(nfont,524,360,3,"Terminator II theme");
write(nfont,524,380,3,"composed by Brad Fiedel");

write(nfont,500,360,5,"Special thanks");
write(nfont,524,360,3,"Mike Green");
write(nfont,524,380,3,"sillydiot");
write(nfont,524,400,3,"Everyone on div-arena");
write(nfont,524,420,3,"Everyone who plays my games");

LOOP
FRAME;

IF (key(_esc))
sound(backsound,256,256);
fade_off();
delete_text(all_text);
status=0;
END

IF (status>3 OR status<2)
BREAK;
END

END
END





//---------------------------------------------------------------------------------------------------------------------





PROCESS options();
PRIVATE
selectory=250;
counter=0;
text1id;
text2id;

BEGIN
option=1;
status=5;
fade_on();

put_screen(0,21);

    write(lfont,512,100,4,"Options");

    write(nfont,412,250,5,"Mountain height");
write_int(nfont,612,250,3,&mountains);

    write(nfont,412,300,5,"Wind strength");
write_int(nfont,612,300,3,&setwindstrength);

    write(nfont,412,350,5,"Tank health");
write_int(nfont,612,350,3,&sethealth);

    write(nfont,412,400,5,"Smoke");
IF (smokeon==1)
text1id=write(nfont,612,400,3,"On");
ELSE
text1id=write(nfont,612,400,3,"Off");
END

    write(nfont,412,450,5,"Music");
IF (smokeon==1)
text2id=write(nfont,612,450,3,"On");
ELSE
text2id=write(nfont,612,450,3,"Off");
END

write(nfont,512,700,4,"Press [Esc] to go back");

LOOP
FRAME;

counter=counter+1;
explosion(482+rand(-290,220),selectory,rand(15,25),10,0);

IF (key(_down) AND selectory<425)
selectory=selectory+5;
FRAME;
selectory=selectory+5;
sound(clicksound,256,256);
FRAME;
selectory=selectory+5;
FRAME;
selectory=selectory+5;
FRAME;
option=option+1;
selectory=selectory+5;
FRAME;
selectory=selectory+5;
FRAME;
selectory=selectory+5;
FRAME;
selectory=selectory+5;
FRAME;
selectory=selectory+5;
FRAME;
selectory=selectory+5;
END

IF (key(_up) AND selectory>275)
selectory=selectory-5;
FRAME;
selectory=selectory-5;
sound(clicksound,256,256);
FRAME;
selectory=selectory-5;
FRAME;
selectory=selectory-5;
FRAME;
option=option-1;
selectory=selectory-5;
FRAME;
selectory=selectory-5;
FRAME;
selectory=selectory-5;
FRAME;
selectory=selectory-5;
FRAME;
selectory=selectory-5;
FRAME;
selectory=selectory-5;
END

IF (option==1)

IF (key(_right) AND mountains<15 AND counter>7)
sound(clicksound,256,256);
counter=0;
mountains=mountains+1;
END

IF (key(_left) AND mountains>1 AND counter>7)
sound(clicksound,256,256);
counter=0;
mountains=mountains-1;
END

END


IF (option==2)

IF (key(_right) AND setwindstrength<10 AND counter>7)
sound(clicksound,256,256);
counter=0;
setwindstrength=setwindstrength+1;
END

IF (key(_left) AND setwindstrength>0 AND counter>7)
sound(clicksound,256,256);
counter=0;
setwindstrength=setwindstrength-1;
END

END


IF (option==3)

IF (key(_right) AND sethealth<200)
sound(clicksound,256,256);
sethealth=sethealth+1;
END

IF (key(_left) AND sethealth>1)
sound(clicksound,256,256);
sethealth=sethealth-1;
END

END


IF (option==4)

IF ((key(_right) OR key(_left)) AND counter>7)
sound(clicksound,256,256);
delete_text(text1id);
counter=0;
smokeon=smokeon+1;
END

IF (smokeon>1)
smokeon=0;
END

IF (smokeon==1)
text1id=write(nfont,612,400,3,"On");
ELSE
text1id=write(nfont,612,400,3,"Off");
END

END


IF (option==5)

IF ((key(_right) OR key(_left)) AND counter>7)
sound(clicksound,256,256);
delete_text(text2id);
counter=0;
musicon=musicon+1;
END

IF (musicon>1)
musicon=0;
END

IF (musicon==1)
text2id=write(nfont,612,450,3,"On");
ELSE
text2id=write(nfont,612,450,3,"Off");
END

END


IF (key(_esc))
sound(backsound,256,256);
fade_off();
IF (musicon==0)
stop_sound(all_sound);
END
delete_text(all_text);
status=0;
END

IF (status>5 OR status<4)
BREAK;
END

END
END





//---------------------------------------------------------------------------------------------------------------------





PROCESS playermenu();
PRIVATE
selectory=300;
counter;

BEGIN
status=7;
put_screen(0,25);
option=1;
fade_on();

write(lfont,512,100,4,"Player Menu");
write(mfont,512,170,4,"How many players?");

write_int(lfont,512,384,4,&playing);

write(mfont,512,620,4,"Press [Enter] to continue");
write(mfont,512,700,4,"Press [Esc] to go back");

LOOP
FRAME;

counter=counter+1;
explosion(rand(462,562),rand(334,434),rand(15,25),10,0);

IF (key(_left) AND counter>7)
counter=0;
sound(clicksound,256,256);
playing=playing-1;
END

IF (key(_right) AND counter>7)
counter=0;
sound(clicksound,256,256);
playing=playing+1;
END

IF (playing>8)
playing=1;
END

IF (playing<1)
playing=8;
END

IF (key(_esc))
sound(backsound,256,256);
fade_off();
delete_text(all_text);
status=0;
END

IF (key(_enter))
sound(selsound,256,256);
fade_off();
delete_text(all_text);
status=10;
BREAK;
END

IF (status>7 OR status<6)
BREAK;
END

END
END





//---------------------------------------------------------------------------------------------------------------------





PROCESS game();
BEGIN
status=11;
x=1024;
y=384;
z=17;
fade_on();

wind=rand(-1000,1000);

ctype=c_scroll;

playerspace=2000/playing;

arrow(arrowx,384);
moverid=mover();

cloud(rand(0,204800),rand(0,20000));
cloud(rand(0,204800),rand(0,20000));
cloud(rand(0,204800),rand(0,20000));
cloud(rand(0,204800),rand(0,20000));
cloud(rand(0,204800),rand(0,20000));
cloud(rand(0,204800),rand(0,20000));

windid=draw(3,56,15,0,954,750,954,730);
draw(2,56,15,0,914,746,994,734);

    write(hfont,954,700,4,"Wind");
write_int(hfont,954,720,4,&dispwind);

timer=0;

start_scroll(0,0,6,4,0,0);
scroll.z=5000;

tery=rand(200,568);     //Initializes the terrain height at a random amount
slope=rand(-15,15);       //Initializes the slope at a random amount

p1life=100*sethealth;
p2life=100*sethealth;
p3life=100*sethealth;
p4life=100*sethealth;
p5life=100*sethealth;
p6life=100*sethealth;
p7life=100*sethealth;
p8life=100*sethealth;

playerup=1;
changeplayers=0;
changecounter=0;
setplayer=1;

IF (setplayer<=playing)
p1id=locchecker(rand(48,2000),200,setplayer);
setplayer=setplayer+1;
playerspace=playerspace*setplayer;
ELSE
setplayer=setplayer+1;
END
IF (setplayer<=playing)
p2id=locchecker(rand(48,2000),200,setplayer);
setplayer=setplayer+1;
playerspace=playerspace*setplayer;
ELSE
setplayer=setplayer+1;
END
IF (setplayer<=playing)
p3id=locchecker(rand(48,2000),200,setplayer);
setplayer=setplayer+1;
playerspace=playerspace*setplayer;
ELSE
setplayer=setplayer+1;
END
IF (setplayer<=playing)
p4id=locchecker(rand(48,2000),200,setplayer);
setplayer=setplayer+1;
playerspace=playerspace*setplayer;
ELSE
setplayer=setplayer+1;
END
IF (setplayer<=playing)
p5id=locchecker(rand(48,2000),200,setplayer);
setplayer=setplayer+1;
playerspace=playerspace*setplayer;
ELSE
setplayer=setplayer+1;
END
IF (setplayer<=playing)
p6id=locchecker(rand(48,2000),200,setplayer);
setplayer=setplayer+1;
playerspace=playerspace*setplayer;
ELSE
setplayer=setplayer+1;
END
IF (setplayer<=playing)
p7id=locchecker(rand(48,2000),200,setplayer);
setplayer=setplayer+1;
playerspace=playerspace*setplayer;
ELSE
setplayer=setplayer+1;
END
IF (setplayer<=playing)
p8id=locchecker(rand(48,2000),200,setplayer);
setplayer=setplayer+1;
playerspace=playerspace*setplayer;
ELSE
setplayer=setplayer+1;
END

LOOP

dispwind=wind/25;
move_draw(windid,54,7,954,745,dispwind+954,735);
changecounter=changecounter+1;

IF (done==1)
FRAME;                    //only displays when the generator is finished

fade(brightness,brightness,brightness,2);

IF (brightness<>100)
brightness=100;
END

END

IF (terx<2048)        //if generator is not finished

tery=tery+slope/3;              //adds or subtracts to the height
slope=slope+rand(-mountains,mountains);    //changes the slope according to the mountain height
map_put(0,6,10,terx,tery);                    //puts a green line 1 pixel wide by 1136 pixels high at the terrain coordinates
terx=terx+1;                  //continues the process

IF (slope<0)
slope=slope+1;
END
                                   //keeps the slope within a certain range
IF (slope>0)
slope=slope-1;
END

IF (slope<-15)
slope=-15;
END
                                   //limits slope
IF (slope>15)
slope=15;
END

IF (tery<200)
slope=9;
tery=tery+slope;
END
                                   //limits slope
IF (tery>568)
slope=-9;
tery=tery+slope;
END

ELSE

IF (done==0)
refresh_scroll(0);
done=1;                      //refreshes scroll graphic to display terrain
END

END

IF (playerup>playing)
playerup=1;
END

IF (NOT key(_space))
setmessage=rand(1,messages);
END

IF (msgtextthere>0)
delete_text(msgtext);
msgtextthere=msgtextthere-1;
END

IF (rand(1,(400-timer)+abs(wind))<3)
timer=0;

IF (dispwind>0)
cloud(-20000,rand(0,20000));
END

IF (dispwind<0)
cloud(224800,rand(0,20000));
END

END

IF (wind<-1000)
wind=wind+500;
END

IF (wind>1000)
wind=wind-500;
END

IF (playing<playerup)
playerup=playerup+1;
changeplayers=1;
END

IF (playerup==1 AND (p1life/100)<1)
playerup=playerup+1;
changeplayers=1;
END

IF (playerup==2 AND (p2life/100)<1)
playerup=playerup+1;
changeplayers=1;
END

IF (playerup==3 AND (p3life/100)<1)
playerup=playerup+1;
changeplayers=1;
END

IF (playerup==4 AND (p4life/100)<1)
playerup=playerup+1;
changeplayers=1;
END

IF (playerup==5 AND (p5life/100)<1)
playerup=playerup+1;
changeplayers=1;
END

IF (playerup==6 AND (p6life/100)<1)
playerup=playerup+1;
changeplayers=1;
END

IF (playerup==7 AND (p7life/100)<1)
playerup=playerup+1;
changeplayers=1;
END

IF (playerup==8 AND (p8life/100)<1)
playerup=playerup+1;
changeplayers=1;
END

IF (deaths=>(playing-1) AND gameover==0)
gameover=1;
write(lfont,650,340,5,"Player");
write_int(lfont,674,340,3,&playerup);
write(lfont,512,428,4,"Wins!");
END

IF (key(_esc))
sound(backsound,256,256);
fade_off();
deaths=0;
gameover=0;
clear_screen();
delete_text(all_text);
delete_draw(all_drawing);
map_put(0,6,4,1024,384);
status=0;
END

IF (status>11 OR status<10)
BREAK;
END

END
END





//---------------------------------------------------------------------------------------------------------------------





PROCESS playerdisp();
BEGIN
graph=(playerup+40);
x=512;
y=-300;
z=-513;
size=200;
angle=40000;

IF ((graph-40)>(playing))
graph=41;
END

IF (graph==41 AND p1life<1)
signal(id,s_kill);
END

IF (graph==42 AND p2life<1)
signal(id,s_kill);
END

IF (graph==43 AND p3life<1)
signal(id,s_kill);
END

IF (graph==44 AND p4life<1)
signal(id,s_kill);
END

IF (graph==45 AND p5life<1)
signal(id,s_kill);
END

IF (graph==46 AND p6life<1)
signal(id,s_kill);
END

IF (graph==47 AND p7life<1)
signal(id,s_kill);
END

IF (graph==48 AND p8life<1)
signal(id,s_kill);
END

IF (gameover==1)
signal(id,s_kill);
END

LOOP
IF ((graph-40)>(playing))
graph=41;
END

IF (graph==41 AND p1life<1)
signal(id,s_kill);
END

IF (graph==42 AND p2life<1)
signal(id,s_kill);
END

IF (graph==43 AND p3life<1)
signal(id,s_kill);
END

IF (graph==44 AND p4life<1)
signal(id,s_kill);
END

IF (graph==45 AND p5life<1)
signal(id,s_kill);
END

IF (graph==46 AND p6life<1)
signal(id,s_kill);
END

IF (graph==47 AND p7life<1)
signal(id,s_kill);
END

IF (graph==48 AND p8life<1)
signal(id,s_kill);
END

graph=(playerup+40);

FRAME;

IF (size>0 AND NOT FADING)
size=size-1;
angle=angle-400;
y=y+6;
END

IF (status>11 OR status<10 OR size<1)
BREAK;
END

END
END





//---------------------------------------------------------------------------------------------------------------------





PROCESS cloud(x,y);
PRIVATE
movespeed;

BEGIN
z=513;
graph=16;

size=rand(10,60);
resolution=100;
movespeed=rand(2,5);
flags=4;

ctype=c_scroll;

LOOP
FRAME;

x=x+(movespeed*dispwind*3);

IF (x<-20000 OR x>224800)
BREAK;
END

IF (status>11 OR status<10)
BREAK;
END

END
END





//---------------------------------------------------------------------------------------------------------------------





PROCESS arrow(x,y);
PRIVATE
flagscounter=0;

BEGIN
graph=11;
flags=4;
size=50;

ctype=c_scroll;

LOOP
FRAME;

flagscounter=flagscounter+1;
x=arrowx;
y=arrowy;

IF (key(_space))
size=1;
ELSE
size=50;
END

IF (flagscounter>10)
flags=0;
END

IF (flagscounter>20)
flagscounter=0;
flags=4;
END

IF (get_id(TYPE rocket)==0 AND get_id(TYPE explosion)==0 AND NOT mouse.left)
scroll.camera=id;
END

IF (status>11 OR status<10)
BREAK;
END

END
END





//---------------------------------------------------------------------------------------------------------------------





PROCESS locchecker(tankx,tanky,tanknumber);
PRIVATE
tankx;
tanky;
tanknumber;

BEGIN
x=tankx;
y=tanky;
graph=8;

ctype=c_scroll;

tank(tankx,tanky,tanknumber);

IF (tanknumber==1)
p1x=x;
IF (abs(x-p2x)<50 OR abs(x-p3x)<50 OR abs(x-p4x)<50 OR abs(x-p5x)<50 OR abs(x-p6x)<50 OR abs(x-p7x)<50 OR abs(x-p8x)<50)
x=rand(48,2000);
END
IF (tanknumber>playing)
signal(id,s_kill_tree);
END
END

IF (tanknumber==2)
p2x=x;
IF (abs(x-p1x)<50 OR abs(x-p3x)<50 OR abs(x-p4x)<50 OR abs(x-p5x)<50 OR abs(x-p6x)<50 OR abs(x-p7x)<50 OR abs(x-p8x)<50)
x=rand(48,2000);
END
IF (tanknumber>playing)
signal(id,s_kill_tree);
END
END

IF (tanknumber==3)
p3x=x;
IF (abs(x-p1x)<50 OR abs(x-p2x)<50 OR abs(x-p4x)<50 OR abs(x-p5x)<50 OR abs(x-p6x)<50 OR abs(x-p7x)<50 OR abs(x-p8x)<50)
x=rand(48,2000);
END
IF (tanknumber>playing)
signal(id,s_kill_tree);
END
END

IF (tanknumber==4)
p4x=x;
IF (abs(x-p1x)<50 OR abs(x-p2x)<50 OR abs(x-p3x)<50 OR abs(x-p5x)<50 OR abs(x-p6x)<50 OR abs(x-p7x)<50 OR abs(x-p8x)<50)
x=rand(48,2000);
END
IF (tanknumber>playing)
signal(id,s_kill_tree);
END
END

IF (tanknumber==5)
p5x=x;
IF (abs(x-p1x)<50 OR abs(x-p2x)<50 OR abs(x-p3x)<50 OR abs(x-p4x)<50 OR abs(x-p6x)<50 OR abs(x-p7x)<50 OR abs(x-p8x)<50)
x=rand(48,2000);
END
IF (tanknumber>playing)
signal(id,s_kill_tree);
END
END

IF (tanknumber==6)
p6x=x;
IF (abs(x-p1x)<50 OR abs(x-p2x)<50 OR abs(x-p3x)<50 OR abs(x-p4x)<50 OR abs(x-p5x)<50 OR abs(x-p7x)<50 OR abs(x-p8x)<50)
x=rand(48,2000);
END
IF (tanknumber>playing)
signal(id,s_kill_tree);
END
END

IF (tanknumber==7)
p7x=x;
IF (abs(x-p1x)<50 OR abs(x-p2x)<50 OR abs(x-p3x)<50 OR abs(x-p4x)<50 OR abs(x-p5x)<50 OR abs(x-p6x)<50 OR abs(x-p8x)<50)
x=rand(48,2000);
END
IF (tanknumber>playing)
signal(id,s_kill_tree);
END
END

IF (tanknumber==8)
p8x=x;
IF (abs(x-p1x)<50 OR abs(x-p2x)<50 OR abs(x-p3x)<50 OR abs(x-p4x)<50 OR abs(x-p5x)<50 OR abs(x-p6x)<50 OR abs(x-p7x)<50)
x=rand(48,2000);
END
IF (tanknumber>playing)
signal(id,s_kill_tree);
END
END

LOOP
FRAME;

IF (tanknumber==1)
IF (abs(x-p2x)<150 OR abs(x-p3x)<150 OR abs(x-p4x)<150 OR abs(x-p5x)<150 OR abs(x-p6x)<150 OR abs(x-p7x)<150 OR abs(x-p8x)<150)
x=rand(48,2000);
p1x=x;
END
END

IF (tanknumber==2)
IF (abs(x-p1x)<150 OR abs(x-p3x)<150 OR abs(x-p4x)<150 OR abs(x-p5x)<150 OR abs(x-p6x)<150 OR abs(x-p7x)<150 OR abs(x-p8x)<150)
x=rand(48,2000);
p2x=x;
END
END

IF (tanknumber==3)
IF (abs(x-p1x)<150 OR abs(x-p2x)<150 OR abs(x-p4x)<150 OR abs(x-p5x)<150 OR abs(x-p6x)<150 OR abs(x-p7x)<150 OR abs(x-p8x)<150)
x=rand(48,2000);
p3x=x;
END
END

IF (tanknumber==4)
IF (abs(x-p1x)<150 OR abs(x-p2x)<150 OR abs(x-p3x)<150 OR abs(x-p5x)<150 OR abs(x-p6x)<150 OR abs(x-p7x)<150 OR abs(x-p8x)<150)
x=rand(48,2000);
p4x=x;
END
END

IF (tanknumber==5)
IF (abs(x-p1x)<150 OR abs(x-p2x)<150 OR abs(x-p3x)<150 OR abs(x-p4x)<150 OR abs(x-p6x)<150 OR abs(x-p7x)<150 OR abs(x-p8x)<150)
x=rand(48,2000);
p5x=x;
END
END

IF (tanknumber==6)
IF (abs(x-p1x)<150 OR abs(x-p2x)<150 OR abs(x-p3x)<150 OR abs(x-p4x)<150 OR abs(x-p5x)<150 OR abs(x-p7x)<150 OR abs(x-p8x)<150)
x=rand(48,2000);
p6x=x;
END
END

IF (tanknumber==7)
IF (abs(x-p1x)<150 OR abs(x-p2x)<150 OR abs(x-p3x)<150 OR abs(x-p4x)<150 OR abs(x-p5x)<150 OR abs(x-p6x)<150 OR abs(x-p8x)<150)
x=rand(48,2000);
p7x=x;
END
END

IF (tanknumber==8)
IF (abs(x-p1x)<150 OR abs(x-p2x)<150 OR abs(x-p3x)<150 OR abs(x-p4x)<150 OR abs(x-p5x)<150 OR abs(x-p6x)<150 OR abs(x-p7x)<150)
x=rand(48,2000);
p8x=x;
END
END

IF (map_get_pixel(0,6,x,y)==58 OR map_get_pixel(0,6,x,y)==0)
y=y+1;
END

IF (playerup==tanknumber)
arrowx=x;
arrowy=y-65;
END

IF (status>11 OR status<10)
BREAK;
END

END
END





//---------------------------------------------------------------------------------------------------------------------






PROCESS tank(x,y,tanknumber);
PRIVATE
tanknumber;
expdist=0;
checknewexpdist=0;
life=1000;
lifetext;
numbertext;

BEGIN
graph=2;
z=-7;

ctype=c_scroll;

cannon(x,y,z+1,tanknumber);

lifetext=write_int(hfont,x-mouse.x,y-30,4,&life);
numbertext=write_int(nfont,x-mouse.x,y,4,&tanknumber);

box(x,y-30);

LOOP
move_text(lifetext,x-scroll.x0,y-30);
move_text(numbertext,x-scroll.x0,y);
FRAME;

x=father.x;
y=father.y-11;

IF (life<10 AND rand(1,life)<2 AND smokeon==1)
smoke(x*10,y*10,15,0);
END

IF (y>768)
life=0;
END

IF (collision(TYPE multiexplosion))
life=life-1;
END

IF (life<1)
delete_text(lifetext);
delete_text(numbertext);
multiexplosion(x,y,75,4,3);
deaths=deaths+1;
signal(father,s_kill);
BREAK;
END

expdist=(expsize*2)-get_dist(get_id(TYPE explosion));

IF (collision(TYPE explosion))
flags=4;
ELSE
flags=0;
END

IF (expdist<0)
expdist=0;
END

IF (tanknumber==1)
life=p1life/100;
END

IF (tanknumber==2)
life=p2life/100;
END

IF (tanknumber==3)
life=p3life/100;
END

IF (tanknumber==4)
life=p4life/100;
END

IF (tanknumber==5)
life=p5life/100;
END

IF (tanknumber==6)
life=p6life/100;
END

IF (tanknumber==7)
life=p7life/100;
END

IF (tanknumber==8)
life=p8life/100;
END

IF (expthere==1)

IF (tanknumber==1)
p1life=p1life-expdist;
life=p1life/100;
END

IF (tanknumber==2)
p2life=p2life-expdist;
life=p2life/100;
END

IF (tanknumber==3)
p3life=p3life-expdist;
life=p3life/100;
END

IF (tanknumber==4)
p4life=p4life-expdist;
life=p4life/100;
END

IF (tanknumber==5)
p5life=p5life-expdist;
life=p5life/100;
END

IF (tanknumber==6)
p6life=p6life-expdist;
life=p6life/100;
END

IF (tanknumber==7)
p7life=p7life-expdist;
life=p7life/100;
END

IF (tanknumber==8)
p8life=p8life-expdist;
life=p8life/100;
END
END

IF (status>11 OR status<10)
BREAK;
END

END
END






//---------------------------------------------------------------------------------------------------------------------






PROCESS cannon(x,y,z,tanknumber);
PRIVATE
addangle=800;
addpower=0;
tanknumber;
fired=0;
firecounter=0;
graphcounter=0;

BEGIN
graph=3;
z=-6;
ctype=c_scroll;

LOOP
FRAME;

firecounter=firecounter+1;
graphcounter=graphcounter+1;

IF (get_id(TYPE rocket)==0)
fired=0;
ELSE
fired=1;
END

IF (father==0 OR (father.x==0 AND father.y==0))
BREAK;
END

x=father.x;
y=father.y;

IF (tanknumber==playerup)

IF (key(_right) AND NOT key(_space))
angle=angle-addangle;
addangle=addangle+200;
END

IF (key(_left) AND NOT key(_space))
angle=angle+addangle;
addangle=addangle+200;
END

IF (NOT (key(_right) OR key(_left)))
addangle=800;
END

IF (addangle>9000)
addangle=9000;
END

IF (angle>90000)
angle=90000;
addangle=800;
END

IF (angle<-90000)
angle=-90000;
addangle=800;
END

IF (power>1000)
power=1000;
addpower=0;
END

IF (power<0)
power=0;
addpower=0;
END

IF (key(_space) AND fired==0 AND gameover==0)

    IF (setmessage==1)
    msgtext=write(hfont,x,y-60,4,"A donut with no hole is a danish!");
    msgtextthere=msgtextthere+1;
    move_text(msgtext,x-scroll.x0,y-60);
    END

    IF (setmessage==2)
    msgtext=write(hfont,x,y-60,4,"Dead people don't talk! Shut up!");
    msgtextthere=msgtextthere+1;
    move_text(msgtext,x-scroll.x0,y-60);
    END

    IF (setmessage==3)
    msgtext=write(hfont,x,y-60,4,"Hope you packed!");
    msgtextthere=msgtextthere+1;
    move_text(msgtext,x-scroll.x0,y-60);
    END

    IF (setmessage==4)
    msgtext=write(hfont,x,y-60,4,"Tu es ma chienne!");
    msgtextthere=msgtextthere+1;
    move_text(msgtext,x-scroll.x0,y-60);
    END

    IF (setmessage==5)
    msgtext=write(hfont,x,y-60,4,"Yippie ki yay!");
    msgtextthere=msgtextthere+1;
    move_text(msgtext,x-scroll.x0,y-60);
    END

    IF (setmessage==6)
    msgtext=write(hfont,x,y-60,4,"Remember the Alamo!");
    msgtextthere=msgtextthere+1;
    move_text(msgtext,x-scroll.x0,y-60);
    END

    IF (setmessage==7)
    msgtext=write(hfont,x,y-60,4,"I got a present for you!");
    msgtextthere=msgtextthere+1;
    move_text(msgtext,x-scroll.x0,y-60);
    END

    IF (setmessage==8)
    msgtext=write(hfont,x,y-60,4,"Aaaaah-CHOO!");
    msgtextthere=msgtextthere+1;
    move_text(msgtext,x-scroll.x0,y-60);
    END

    IF (setmessage==9)
    msgtext=write(hfont,x,y-60,4,"Here, catch!");
    msgtextthere=msgtextthere+1;
    move_text(msgtext,x-scroll.x0,y-60);
    END

    IF (setmessage==10)
    msgtext=write(hfont,x,y-60,4,"Look out below!");
    msgtextthere=msgtextthere+1;
    move_text(msgtext,x-scroll.x0,y-60);
    END

    IF (setmessage==11)
    msgtext=write(hfont,x,y-60,4,"Guns don't kill people, bullets do!");
    msgtextthere=msgtextthere+1;
    move_text(msgtext,x-scroll.x0,y-60);
    END

    IF (setmessage==12)
    msgtext=write(hfont,x,y-60,4,"Swallow this!");
    msgtextthere=msgtextthere+1;
    move_text(msgtext,x-scroll.x0,y-60);
    END

    IF (setmessage==13)
    msgtext=write(hfont,x,y-60,4,"If I were you, I'd be dead!");
    msgtextthere=msgtextthere+1;
    move_text(msgtext,x-scroll.x0,y-60);
    END

    IF (setmessage==14)
    msgtext=write(hfont,x,y-60,4,"I'll eat your children!");
    msgtextthere=msgtextthere+1;
    move_text(msgtext,x-scroll.x0,y-60);
    END

    IF (setmessage==15)
    msgtext=write(hfont,x,y-60,4,"I'll kill you to death!");
    msgtextthere=msgtextthere+1;
    move_text(msgtext,x-scroll.x0,y-60);
    END

    IF (setmessage==16)
    msgtext=write(hfont,x,y-60,4,"Put the women and children to bed, it's game time!");
    msgtextthere=msgtextthere+1;
    move_text(msgtext,x-scroll.x0,y-60);
    END

    IF (setmessage==17)
    msgtext=write(hfont,x,y-60,4,"Death from above!");
    msgtextthere=msgtextthere+1;
    move_text(msgtext,x-scroll.x0,y-60);
    END

    IF (setmessage==18)
    msgtext=write(hfont,x,y-60,4,"This will hurt you more than me!");
    msgtextthere=msgtextthere+1;
    move_text(msgtext,x-scroll.x0,y-60);
    END

    IF (setmessage==19)
    msgtext=write(hfont,x,y-60,4,"Today's special: Death!");
    msgtextthere=msgtextthere+1;
    move_text(msgtext,x-scroll.x0,y-60);
    END

    IF (setmessage==20)
    msgtext=write(hfont,x,y-60,4,"If I was you, I'd hate me");
    msgtextthere=msgtextthere+1;
    move_text(msgtext,x-scroll.x0,y-60);
    END

    IF (setmessage==21)
    msgtext=write(hfont,x,y-60,4,"Don't do DRUGS!");
    msgtextthere=msgtextthere+1;
    move_text(msgtext,x-scroll.x0,y-60);
    END

    IF (setmessage==22)
    msgtext=write(hfont,x,y-60,4,"Name's Ash, housewares.");
    msgtextthere=msgtextthere+1;
    move_text(msgtext,x-scroll.x0,y-60);
    END

    IF (setmessage==23)
    msgtext=write(hfont,x,y-60,4,"Hasta la vista, baby!");
    msgtextthere=msgtextthere+1;
    move_text(msgtext,x-scroll.x0,y-60);
    END

    IF (setmessage==24)
    msgtext=write(hfont,x,y-60,4,"If I kill you, does that make me a bad person?");
    msgtextthere=msgtextthere+1;
    move_text(msgtext,x-scroll.x0,y-60);
    END

power=power+1+(addpower/10);
addpower=addpower+1;
IF (graphcounter>4 AND power<1000)
graphcounter=0;
shotgraph(x*10,y*10,angle+90000);
END

END

IF (NOT key(_space) AND power>0)
firecounter=0;
timer=0;
sound(firesound,256,256);
rocket(x*10,y*10,angle+90000,50,tanknumber);
fired=1;
power=0;
addpower=0;
END

END

IF (collision(TYPE explosion))
flags=4;
ELSE
flags=0;
END

IF (status>11 OR status<10)
BREAK;
END

END
END





//---------------------------------------------------------------------------------------------------------------------





PROCESS shotgraph(x,y,angle);
BEGIN
resolution=10;
advance(20+(power*2));
graph=31;
size=20+(power/25);
flags=4;

ctype=c_scroll;

sound(clicksound,256,(power/4)+128);

LOOP
FRAME;

IF (NOT key(_space))
BREAK;
END

END
END





//---------------------------------------------------------------------------------------------------------------------





PROCESS box(x,y);
BEGIN
graph=15;
flags=4;
z=-6;
ctype=c_scroll;

LOOP
FRAME;

IF (father<>0)
x=father.x;
y=father.y-30;
END

IF (father==0)
size=size-1;
END

IF (size<1)
BREAK;
END

IF (status>11 OR status<10)
BREAK;
END

END
END





//---------------------------------------------------------------------------------------------------------------------





PROCESS rocket(x,y,moveangle,explsize,player);
PRIVATE
kind;
starty;
movespeed;
addy=0;
moveangle;
windtimer=0;
moverocket=0;
timealoft=1;
tanknumber;
explsize;
explspeed=7;
explsound=1;

BEGIN
resolution=10;
xadvance(moveangle,400);
graph=9;
ctype=c_scroll;
starty=y;
movespeed=power;

LOOP
FRAME;

timealoft=timealoft+1;
xadvance(moveangle,movespeed/4);
y=y+(addy/2);
addy=addy+1;

IF (NOT mouse.left)
scroll.camera=id;
END

IF (movespeed<5)
movespeed=5;
END

IF (timealoft<25)
x=x+(((((wind*7)/movespeed)/(26-timealoft))*setwindstrength)/5);
ELSE
x=x+((((wind*7)/movespeed)*setwindstrength)/5);
END

IF (windtimer>movespeed/40)
windtimer=0;
END

IF (movespeed>0)
movespeed=movespeed-1;
END

IF (y>7680 OR x>22480 OR x<-2000)
sound(laughsound,256,256);
playerup=player+1;
playerdisp();
changeplayers=1;
wind=wind+rand(-200,200);
BREAK;
END

IF ((map_get_pixel(0,6,x/10,y/10)<>0 AND map_get_pixel(0,6,x/10,y/10)<>58) OR collision(TYPE tank) OR collision(TYPE cannon))
explosion(x/10,y/10,explsize,explspeed,explsound);
playerup=playerup+1;
playerdisp();
changeplayers=1;
wind=wind+rand(-600,600);
BREAK;
END

IF (status>11 OR status<10)
BREAK;
END

END
END





//---------------------------------------------------------------------------------------------------------------------





PROCESS explosion(x,y,size,speed,expsound);
PRIVATE
speed;
expsound;
expcounter=0;
addgraph=1;

BEGIN
graph=101;
z=-5;
expthere=1;

IF (NOT mouse.left AND status==9)
scroll.camera=id;
END

IF (expsound==1)
sound(smallexpsound,256,256);
END

IF (expsound==2)
sound(medexpsound,256,256);
END

IF (expsound==3)
sound(bigexpsound,256,256);
END

map_xput(0,6,7,x,y,angle,size,0);
refresh_scroll(0);

IF (status==11)
ctype=c_scroll;
END

LOOP
FRAME;

expsize=size;

IF (rand(101,graph)<104 AND status==11 AND smokeon==1)
smoke(x*10,y*10,size,1);
END

IF (status==11)
scroll.camera=id;
END

IF (size>50)
brightness=size*2;
END

expcounter=expcounter+1;

IF (speed>10)
addgraph=-(10-speed);
ELSE
addgraph=1;
END

IF (expcounter>(10-speed))
graph=graph+addgraph;
expcounter=0;
END

IF (graph>116)
expthere=0;
BREAK;
END

END
END





//---------------------------------------------------------------------------------------------------------------------





PROCESS multiexplosion(x,y,size,speed,expsound);
PRIVATE
speed;
expsound;
expcounter=0;
addgraph=1;

BEGIN
graph=101;
z=-5;

IF (expsound==1)
sound(smallexpsound,256,256);
END

IF (expsound==2)
sound(medexpsound,256,256);
END

IF (expsound==3)
sound(bigexpsound,256,256);
END

map_xput(0,6,7,x,y,angle,size,0);
refresh_scroll(0);

IF (status==11)
ctype=c_scroll;
END

LOOP
FRAME;

IF (rand(101,graph)<104 AND smokeon==1)
smoke(x*10,y*10,size,1);
END

IF (size>50)
brightness=size*2;
END

expcounter=expcounter+1;

IF (speed>10)
addgraph=-(10-speed);
ELSE
addgraph=1;
END

IF (expcounter>(10-speed))
graph=graph+addgraph;
expcounter=0;
END

IF (graph>116)
BREAK;
END

END
END





//---------------------------------------------------------------------------------------------------------------------





PROCESS smoke(x,y,size,anydir);
PRIVATE
spinangle;
moveangle;
movespeed;
counter;
anydir;

BEGIN
resolution=10;
graph=26;
size=(size*2)/3;
flags=4;

ctype=c_scroll;

spinangle=rand(-7000,7000);
movespeed=rand(5,25);
IF (anydir==1)
moveangle=rand(-180000,180000);
ELSE
moveangle=rand(70000,110000);
END

IF (sethealth<10)
signal(id,s_kill);
END

LOOP
FRAME;

counter=counter+1;
angle=angle+spinangle;
xadvance(moveangle,movespeed);
y=y-10;
x=x+dispwind;

IF (counter>3)
counter=0;
size=size-1;
END

IF (size<1)
BREAK;
END

END
END





//---------------------------------------------------------------------------------------------------------------------





PROCESS mover();
BEGIN
z=-5;

LOOP
FRAME;

x=mouse.x+512;
y=384;

IF (mouse.left)
scroll.camera=moverid;       //sets scroll camera
END

IF (status>11 OR status<10)
BREAK;
END

END
END
